home *** CD-ROM | disk | FTP | other *** search
/ Micromanía 93 / CDMM_93_2.ISO / Project Nomads / nomads_demo_eng.exe / AIRPLANE_ATTACKSTATIC.TCL < prev    next >
Encoding:
Text File  |  2000-09-15  |  4.4 KB  |  162 lines

  1. new nroot airplane/attackstatic
  2. sel airplane/attackstatic
  3.  
  4. # --------------------------------------------------------------------
  5. # Defaultverhalten. Wenn nicht wichtig ist (also 1.0 oder so liefert)
  6. # dann nehmen wir das. Deshalb liefert die Routine einen Wert unter 1,
  7. # damit er von Ausnahmesituationen ueberboten werden kann.
  8. # Da goto nicht unterbrochen werden kann, sollte es nicht zulange
  9. # dauern.
  10. # --------------------------------------------------------------------
  11. new ncommandlist goto
  12. goto.setadjusttype    reach
  13. goto.settestcommand   aasgoto_test
  14. goto.addcommand true 0 0 -100 false 0 0 0 nothing 2.0
  15.  
  16. proc aasgoto_test {} { 
  17.  
  18. global zufallszahl
  19.  
  20.     # Zufallszahl nur einmal initialisieren!
  21.     set zufallszahl [expr rand()]
  22.     return 0.5
  23. }
  24.  
  25. # ------------------------------------------------------------------
  26. # Nun kommen alle speziellen Listen: Was soll das Objekt machen?
  27. # Es soll ein Ziel anfliegen, davor abdrehen und solange wegfliegen,
  28. # bis es wieder Anlauf nehmen kann. Das Anfliegen ist das Default-
  29. # verhalten. Nun kommt das Abdrehen
  30. # ------------------------------------------------------------------
  31.  
  32. # ------------------------------------------------------------------
  33. # Ich weiche aus, wenn ich nahe am Ziel bin und dieses vor mir habe
  34. # ------------------------------------------------------------------
  35.  
  36. # Ausweichen nach links. 
  37. new ncommandlist goleft
  38. goleft.setadjusttype   horimaneuver
  39. goleft.settestcommand  aasgoleft_test
  40. goleft.addcommand  true  -150  20 0 false 0 0 0 nothing 3.0
  41.  
  42. proc aasgoleft_test {} { 
  43.  
  44. global zufallszahl
  45.  
  46.     # ziel nahe und voraus?
  47.     if {[.gethorizontaltargetdistance] < 100} {
  48.     
  49.         if {[.gettargetangle] < 70} {
  50.         
  51.             # Dann Zufallsauswahl, wohin es gehen soll
  52.             if { (0.0 <= $zufallszahl) && (0.3 > $zufallszahl) } {
  53.                 return 1.0
  54.             }
  55.         }
  56.     }
  57.     
  58.     return 0.0
  59. }
  60.  
  61. # Ausweichen nach rechts. 
  62. new ncommandlist goright
  63. goright.setadjusttype   horimaneuver
  64. goright.settestcommand  aasgoright_test
  65. goright.addcommand  true  150  20 0 false 0 0 0 nothing 3.0
  66.  
  67. proc aasgoright_test {} { 
  68.  
  69. global zufallszahl
  70.  
  71.     # ziel nahe und voraus?
  72.     if {[.gethorizontaltargetdistance] < 100} {
  73.     
  74.         if {[.gettargetangle] < 70} {
  75.         
  76.             # Dann Zufallsauswahl, wohin es gehen soll
  77.             if { (0.7 <= $zufallszahl) && (1.0 >= $zufallszahl) } {
  78.                 return 1.0
  79.             }
  80.         }
  81.     }
  82.  
  83.     return 0.0
  84. }
  85.  
  86. # Ausweichen nach oben. 
  87. new ncommandlist goup
  88. goup.setadjusttype   horimaneuver
  89. goup.settestcommand  aasgoup_test
  90. goup.addcommand  true  0 100 0 false 0 0 0 nothing 3.0
  91.  
  92. proc aasgoup_test {} { 
  93.  
  94. global zufallszahl
  95.  
  96.     # ziel nahe und voraus?
  97.     if {[.gethorizontaltargetdistance] < 100} {
  98.     
  99.         if {[.gettargetangle] < 70} {
  100.         
  101.             # Dann Zufallsauswahl, wohin es gehen soll
  102.             if { (0.4 <= $zufallszahl) && (0.7 >= $zufallszahl) } {
  103.                 return 1.0
  104.             }
  105.         }
  106.     }
  107.     
  108.     return 0.0
  109. }
  110.  
  111. # ----------------------------------------------------------------------
  112. # Nun das Anlauf nehmen. Das Ziel ist hinter mir und ich bin noch nicht
  113. # weit genug weg um Anlauf nehmen zu koennen. Weil wir Ziele auf Inseln
  114. # (die statischen sind ja i.A. Haeuser) am besten von oben angreifen, 
  115. # nutzen wir den Anlauf auch, um das Flugzeug zu "heben".
  116. # ----------------------------------------------------------------------
  117.  
  118. new ncommandlist goaway
  119. goaway.setadjusttype    horimaneuver
  120. goaway.settestcommand   aasgoaway_test
  121. goaway.addcommand       true  0 0 -100 false 0 0 0 nothing 2.0
  122.  
  123. proc aasgoaway_test {} {
  124.  
  125.     if {[.gettargetdistance] < 200} {
  126.     
  127.         if {[.gettargetangle] > 90} {
  128.  
  129.             if {[.getverticaltargetdistance] <= -20.0} {
  130.                 return 1.0
  131.             }
  132.         }
  133.     }
  134.     
  135.     return 0.0
  136. }    
  137.  
  138. new ncommandlist goawayandup
  139. goawayandup.setadjusttype   horimaneuver
  140. goawayandup.settestcommand  aasgoawayandup_test
  141. goawayandup.addcommand      true  0 60 -100 false 0 0 0 nothing 2.0
  142.  
  143. proc aasgoawayandup_test {} {
  144.  
  145.     if {[.gettargetdistance] < 200} {
  146.     
  147.         if {[.gettargetangle] > 90} {
  148.         
  149.             if {[.getverticaltargetangle] > -20.0} {
  150.                 return 1.0
  151.             }
  152.         }
  153.     }
  154.     
  155.     return 0.0
  156. }    
  157.  
  158.  
  159. sel ..
  160. sel ..
  161.  
  162.